Aller au contenu principal

Cours - Automatiser avec at et les cron jobs

Executer des commandes (ou un script) à distance

# Verifier depuis combien de temps la machine tourne
$ echo "uptime" | ssh machine
19:48:51 up 1 day, 2:05, 1 user, load average: 0.08, 0.02, 0.01

# Lancer un script à distance
$ cat script.sh | ssh machine
[...

at

  • Executer une fois une action à un moment précis dans le futur
  • Format de date/temps plutôt user-friendly
# En interactif
$ at 5:00 PM
warning: commands will be executed using /bin/sh
at> reboot
job 5 at Fri Oct 12 17:00:00 2018
# Avec un script
$ at now + 30 minutes -f mettre_a_jour.sh
job 6 at Thu Oct 6 20:22:00 2018

9. Automatiser

Les jobs cron

  • Répéter une tâche à intervalle régulier (heures, jours, mois, ...)
  • Chaque utilisateur peut en configurer avec crontab -e
10 * 1 * * /chemin/vers/un/script

Les jobs cron : syntaxe (1/3)

10 * 1 * * /chemin/vers/un/script
  • 10 : à la minute 10
  • * :toutes les heures
  • 1 le 1er du mois
  • * tous les mois
  • * (tous les jours de la semaine)

Les jobs cron : syntaxe (2/3)

0 8 * * 1-5 /chemin/vers/un/script
  • 0 : à la minute 0
  • 8 : à 8h
  • * (tous les jours du mois)
  • * tous les mois
  • 1-5 tous les jours de travail (lundi à vendredi)

Les jobs cron : syntaxe (3/4)

 */10 * * * * /chemin/vers/un/script
  • */10 : toutes les 10 minutes
  • * toutes les heures
  • * tous les jours du mois
  • * tous les mois
  • * tous les jours de la semaine

Les jobs cron : syntaxe (4/4)

  • http://crontab.guru/ to the rescue !

/etc/crontab et /etc/cron.d/

  • Ce sont des fichiers/dossiers de config cron "globaux"
  • Dedans, on specifie aussi l'utilisateur utilisé pour lancer le script :
 # M  H  D M W   User    Command --->
*/30 * * * * feed2toot feed2toot -c /etc/feed2toot/feed2toot.ini

/etc/cron.hourly, daily, weekly, monthly

  • Ils contiennent directement des scripts qui seront executés automatiquement à certains intervalles
  • Attention
    • le nom des fichiers dedans ne doit pas avoir d'extensions ...
    • .. et doit être executable (+x)